package com.itheima.web;

import com.itheima.bean.User;
import com.itheima.common.R;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.Map;

@RequestMapping("/user")
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 用户登录
     * @param map
     * @return
     */
    @PostMapping("/login")
    public R login(@RequestBody Map<String , String> map  , HttpSession session){

        //1. 获取页面传递上来的电话和验证码
        String phone = map.get("phone");
        String code = map.get("code");

        System.out.println(phone + "=" + code);

        //2. 校验验证码： 拿着现在从页面提交上来的验证码和之前获取验证码得到的文字进行比较！

        //2.1 获取以前的验证码
        String oldCode = (String) session.getAttribute("code");
        //2.2 如果不一样，直接返回！
        if(!oldCode.equals(code)){
            return R.error("验证码不正确！");
        }

        /*
            3. 验证码正确了之后，还是要进行数据库的操作！
                3.1 需要拿着这个手机号去查询数据库，看看有没有这个手机号的用户信息，
                    3.1.1 如果有，就把这个用户的数据查询出来，存储到session作用域，以便后续这个用户下单，就可以捕捉到他的身份！
                    3.1.2 如果没有，即表示这个用户是第一次登录，要完成添加【注册】的操作。也要把User对象存储到session作用域、
         */

        //3.1 根据手机号来查询用户。
        User user = userService.findUserByPhone(phone);

        //3.2 判定用户是否存在
        if(user == null){
            //3.3 如果进入了这个区域，即表示该用户不存在，需要添加该用户的信息到数据库

            //3.3.1 组装用户信息, 存储到数据库
            user = new User();
            user.setPhone(phone);
            user.setStatus(1);
            userService.add(user);
        }


        //3.4 如果进入了这个区域，即表示该用户存在， 把用户保存到session作用域即可
        session.setAttribute("user" , user);

        return R.success("登录成功！");

    }


    /**
     * 用户退出
     *  @Description
     *   @param
     *   @Return
    */
    @PostMapping("/loginout")
    public R loginOut(HttpSession session){
        //删除session里保存的用户信息
        session.removeAttribute("user");

        return R.success("用户退出成功");
    }
}
